package persistencia.consultas;

public class Consultas {
	
	public String existeExcenario(){
		return "select * from escenarios where idEscenario = ?";
	}
	
	public String esEscenarioPrimario(){
		return "select * from objetos_primarios where idEscenario = ?";
	}
		
	public String obtenerObjetosEscenarioPrimario(){
		return "select o.idObjeto, o.coordenadaX, o.coordenadaY, o.alturaObjeto, o.anchoObjeto, os.tipoObstaculo, os.rompible, os.impactable, op.idEscenario from objetos o inner join (obstaculos os inner join objetos_primarios op on os.idObjeto = op.idObjeto and idEscenario = ?) on o.idObjeto = os.idObjeto;";
	}
	
	public String esEscenarioPartida(){
		return "select * from objetos_actuales oa, partidas p where p.idPartida = oa.idPartida and p.idEscenario = ?";
	}
	
	public String obtenerObjetosEscenarioPartida(){
		return "select * from objetos_actuales where idPartida = ? order by idObjeto";
	}
	
	public String insertEscenario(){
		return "insert into escenarios values(?,?)";
	}
	
	public String insertObjetos(){
		return "insert into objetos values (?,?,?,?,?,?)";
	}
	
	public String insertObstaculos(){
		return "insert into obstaculos values (?,?,?,?)";
	}

	public String insertPersonajes(){
		return "insert into personajes values (?,?,?,?,?,?)";
	}
	
	public String insertObjetosActuales(){
		return "insert into objetos_actuales values (?,?)";
	}
	
	public String insertObjetosPrimarios(){
		return "insert into objetos_primarios values (?,?)";
	}
	
	public String deleteEscenario(){
		return "delete from escenarios where idEscenario = ?";
	}
	
	public String deleteObjetosPrimariosPorIdEsc(){
		return "delete from objetos_primarios where idEscenario = ?";
	}
	
	public String deleteObjetosPartidaPorIdPart(){
		return "delete from objetos_actuales where idPartida = ?";
	}
	
	public String deletePersonaje(){
		return "delete from personajes where idObjeto = ?";
	}
	
	public String deleteObjeto(){
		return "delete from objetos where idObjeto = ?";
	}
	
	public String escenarioDependeDePartida(){
		return "select * from partidas where idEscenario = ?";
	}
	
	public String obtenerEscenarios(){
		return "select * from escenarios";
	}
	
	public String getLastIndexPartida(){
		return "select max(idPartida) from partidas";
	}
	
	public String obtenerDatosPartida(){
		return "select * from partidas where idPartida = ?";
	}
	
	public String obtenerTipoObjeto(){
		return "select * from objetos where idObjeto = ?";
	}
	
	public String insertPartida(){
		return "insert into partidas values(?,?,?,?)";
	}
	
	public String obtenerIdEscenarioPartida(){
		return "select idEscenario from partidas where idPartida = ?";
	}
	
	public String obtenerPersonaje(){
		return "select * from objetos o, personajes p where o.idObjeto=p.idObjeto and o.idObjeto = ?";
	}
	
	public String obtenerObstaculo(){
		return "select * from objetos o, obstaculos obs where o.idObjeto=obs.idObjeto and o.idObjeto = ?";
	}
	
	public String obtenerPersonajesActuales(){
		return "select * from objetos o, personajes p, objetos_actuales oa where oa.idPartida = ? and o.idObjeto=p.idObjeto and oa.idObjeto = o.idObjeto and personajeActual = 1 order by p.idObjeto";
	}
	
	public String obtenerIdsPersonajesPartida(){
		return "select * from objetos o, personajes p, objetos_actuales oa where oa.idPartida = ? and o.idObjeto=p.idObjeto and oa.idObjeto = o.idObjeto order by p.idObjeto";
	}
	
	public String obtenerUltimoIndiceObjetos(){
		return "select LAST_INSERT_ID() as ultimoId from objetos";
	}
	
	public String obtenerEscenario(){
		return "select * from escenarios where idEscenario = ?";
	}
	
	public String obtenerEscenarioPartida(){
		return "select * from escenarios e, partidas p where e.idEscenario = p.idEscenario and p.idPartida = ?";
	}
	
	public String listarPartidas(){
		return "select * from partidas";
	}
	
}
